import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import org.fusesource.jansi.AnsiConsole;

public class ConsultaPaciente {
	
	public static void copaciente() {
		AnsiConsole.out.print("\u001b[2J");
		Scanner dados = new Scanner(System.in);
		short x=1, seleciona;
		boolean erro;
		String cpf="";
		System.out.println("___________________________________Hemouna______________________________________");
		System.out.println("_____________________________Consulta - Paciente________________________________");
		System.out.println("\n\n\n");
		try{
			Class.forName("org.hsqldb.jdbcDriver" ); 	    
			Connection con = DriverManager.getConnection("jdbc:hsqldb:file:Banco/BD", "sa", "");
			Statement stm = con.createStatement();			
			while (x == 1){
				System.out.println(" Deseja pesquisar por");
				System.out.println("	1 - Dados paciente...");
				System.out.println("	2 - Pacientes com grupo sanguineo...");
				System.out.println("	3 - Todos pacientes cadastrados");
				System.out.println("	0 - Voltar");
				seleciona = dados.nextShort();
				switch(seleciona){
					case 1:{
						System.out.print("CPF (Somente Numeros): ");
						erro = true;
						while (erro == true){
							cpf = dados.next();
							if (cpf.length() == 11){
								erro = false;
							} else {
								System.out.println("CPF invalido. Informe um valido.");
							}
						}	
						ResultSet rs = stm.executeQuery("SELECT paciente.nome, paciente.ala, sangue.tiposangue FROM paciente join sangue on paciente.sangue_id = sangue.id where cpf="+cpf);
						System.out.printf("+------------+----------------------------------------+--------+---------------+");
						System.out.printf("|    CPF     |                  Nome                  | Sangue |    Ala Hosp.  |");
						System.out.printf("+------------+----------------------------------------+--------+---------------+");
						while(rs.next()){
					        String nome = rs.getString("nome");
					        String tsangue = rs.getString("tiposangue");
					        String ala = rs.getString("ala");
					        System.out.printf("|"+cpf+" |"+Espaco.add(nome, 39)+"|"+Espaco.add(tsangue, 7)+"|"+Espaco.add(ala, 14)+"|");
					    }
						System.out.printf("+------------+----------------------------------------+--------+---------------+\n\n");
						break;
					}
					case 2:{
						erro = true;
						System.out.printf("+----------+--------+--------+--------+--------+---------+---------+-----------+");
						System.out.printf("|   1 - O+ | 2 - O- | 3 - A+ | 4 - A- | 5 - B+ |  6 - B- | 7 - AB+ | 8 - AB-   |");
						System.out.printf("+----------+--------+--------+--------+--------+---------+---------+-----------+\n");
						while (erro == true){
							seleciona = dados.nextShort();
							if (seleciona == 1 || seleciona == 2 || seleciona == 3 || seleciona == 4 || seleciona == 5 || seleciona == 6 || seleciona == 7 || seleciona == 8){
								erro = false;
							} else {
								System.out.println("Opcao invalida. Informe outra opcao.");
							}
						}
						ResultSet rs = stm.executeQuery("SELECT paciente.cpf, paciente.nome, paciente.ala, sangue.tiposangue FROM paciente join sangue on paciente.sangue_id = sangue.id where sangue_id="+seleciona);
						System.out.printf("+------------+----------------------------------------+--------+---------------+");
						System.out.printf("|    CPF     |                  Nome                  | Sangue |    Ala Hosp.  |");
						System.out.printf("+------------+----------------------------------------+--------+---------------+");
						while(rs.next()){
							String cpf1 = rs.getString("cpf");
					        String nome = rs.getString("nome");
					        String tsangue = rs.getString("tiposangue");
					        String ala = rs.getString("ala");
					        System.out.printf("|"+cpf1+" |"+Espaco.add(nome, 39)+"|"+Espaco.add(tsangue, 7)+"|"+Espaco.add(ala, 14)+"|");
					    }
						System.out.printf("+------------+----------------------------------------+--------+---------------+\n\n");
						break;
					}
					case 3:{	
						ResultSet rs = stm.executeQuery("SELECT paciente.cpf, paciente.nome, paciente.ala, sangue.tiposangue FROM paciente join sangue on paciente.sangue_id = sangue.id");
						System.out.printf("+------------+----------------------------------------+--------+---------------+");
						System.out.printf("|    CPF     |                  Nome                  | Sangue |    Ala Hosp.  |");
						System.out.printf("+------------+----------------------------------------+--------+---------------+");
						while(rs.next()){
							String cpf1 = rs.getString("cpf");
					        String nome = rs.getString("nome");
					        String tsangue = rs.getString("tiposangue");
					        String ala = rs.getString("ala");
					        System.out.printf("|"+cpf1+" |"+Espaco.add(nome, 39)+"|"+Espaco.add(tsangue, 7)+"|"+Espaco.add(ala, 14)+"|");
					    }
						System.out.printf("+------------+----------------------------------------+--------+---------------+\n\n");
						break;
					}
					case 0:{
						MenuConsulta.meconsulta();
					}
					
					default: System.out.println("Opcao invalida.");
				}				
				
				System.out.print("Pesquisar outro paciente? 1-Sim ou 2-Nao\n\n");
				x = dados.nextShort();
			}
			stm.execute("SHUTDOWN");
		}catch(ClassNotFoundException e){
		    System.out.println("Erro ao carregar o driver JDBC. ");
		}catch(Exception e){
		    System.out.println("Erro de SQL: "+e);
		    e.printStackTrace();
		}
		MenuConsulta.meconsulta();
	}

}
